asyncio 是 Python 的标准异步库,其核心是一个事件循环 (Event Loop)。
你可以把事件循环想象成一个大总管或调度中心。它的工作是:
- 维护一个“待办任务”列表(里面放着协程对象)。
- 从列表中取出一个任务并开始执行。
- 如果任务执行到
await处需要暂停(比如等待网络数据),事件循环就会将它挂起,然后立即去执行列表中的下一个就绪任务。 - 当被挂起的任务所等待的事件完成时(比如网络数据返回了),事件循环会在未来的某个时刻把它重新唤醒,从上次暂停的地方继续执行。
通过 asyncio.run(main_coroutine) 启动的程序,实际上就是启动了这个事件循环来管理 main_coroutine 以及它所触发的所有子协程。
相关链接:
- 它调度的是什么?是协程 → 协程是可暂停和恢复的函数
- 协程如何告诉事件循环自己要暂停?通过
await→await是协程之间的交接棒